package com.ssy.lingxi.order.service.platform;

import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.order.model.vo.basic.request.OrderPayChannelVO;
import com.ssy.lingxi.order.model.vo.payment.request.PaymentParameterChannelVO;
import com.ssy.lingxi.order.model.vo.payment.request.PaymentParameterInsertOrUpdateVO;
import com.ssy.lingxi.order.model.vo.payment.response.PaymentParameterDetailVO;
import com.ssy.lingxi.order.model.vo.payment.response.PaymentParameterItemVO;
import com.ssy.lingxi.order.model.vo.payment.response.PaymentParameterPayTypeDetailVO;
import com.ssy.lingxi.order.model.vo.platform.request.MemberPaymentIdVO;
import com.ssy.lingxi.order.model.vo.platform.request.MemberPaymentPageVO;
import com.ssy.lingxi.order.model.vo.platform.request.MemberPaymentStatusVO;
import com.ssy.lingxi.order.model.vo.platform.request.MemberPaymentVO;
import com.ssy.lingxi.order.model.vo.platform.response.MemberPaymentQueryVO;
import org.springframework.http.HttpHeaders;

import java.util.List;

/**
 * 平台支付参数设置相关接口
 * @author 万宁
 * @version 2.0.0
 * @date 2021-08-12
 */
public interface IPlatformPaymentParameterService {
    /**
     * 查询支付参数配置详情
     * @param headers HttpHeaders信息
     * @return 查询结果
     */
    Wrapper<List<PaymentParameterPayTypeDetailVO>> findParameters(HttpHeaders headers);

    /**
     * 根据支付渠道，查询支付参数下拉框列表
     * @param headers HttpHeaders信息
     * @param channelVO 接口参数
     * @return 查询结果
     */
    Wrapper<List<PaymentParameterItemVO>> findPayChannelParameters(HttpHeaders headers, OrderPayChannelVO channelVO);

    /**
     * 新增或修改平台支付参数设置
     * @param headers HttpHeaders信息
     * @param parameterVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> createParameters(HttpHeaders headers, PaymentParameterInsertOrUpdateVO parameterVO);

    /**
     * “商户参数配置” - 查询会员通用支付参数配置列表
     * @param headers HttpHeaders信息
     * @param channelVO 接口参数
     * @return 查询结果
     */
    Wrapper<List<PaymentParameterDetailVO>> findMemberCommonParameters(HttpHeaders headers, OrderPayChannelVO channelVO);

    /**
     * “商户参数配置” - 根据支付渠道，查询会员通用支付参数下拉框列表
     * @param headers HttpHeaders信息
     * @param channelVO 接口参数
     * @return 查询结果
     */
    Wrapper<List<PaymentParameterItemVO>> findMemberCommonPayChannelParameters(HttpHeaders headers, OrderPayChannelVO channelVO);

    /**
     * “商户参数配置” - 新增或修改会员通用参数设置
     * @param headers HttpHeaders信息
     * @param parameterVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> createMemberCommonParameters(HttpHeaders headers, PaymentParameterChannelVO parameterVO);

    /**
     * 分页查询商户支付参数配置列表
     * @param headers HttpHeaders信息
     * @param pageVO 接口参数
     * @return 查询结果
     */
    Wrapper<PageData<MemberPaymentQueryVO>> pageMemberPayments(HttpHeaders headers, MemberPaymentPageVO pageVO);

    /**
     * 新增商户支付参数配置时，查询支付参数下拉框列表
     * @param headers HttpHeaders信息
     * @return 查询结果
     */
    Wrapper<List<PaymentParameterItemVO>> findMemberPaymentParameters(HttpHeaders headers);

    /**
     * 新增或修改商户支付参数配置
     * @param headers HttpHeaders信息
     * @param paymentVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> createMemberPayment(HttpHeaders headers, MemberPaymentVO paymentVO);

    /**
     * 修改商户支付参数配置状态
     * @param headers HttpHeaders信息
     * @param statusVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> updateMemberPaymentStatus(HttpHeaders headers, MemberPaymentStatusVO statusVO);

    /**
     * 删除商户支付参数配置
     * @param headers HttpHeaders信息
     * @param idVO 接口参数
     * @return 删除结果
     */
    Wrapper<Void> deleteMemberPayment(HttpHeaders headers, MemberPaymentIdVO idVO);
}
